
#ifndef __BETTY_KEYTAB_H__
#define __BETTY_KEYTAB_H__


#define BETTY_MODIFIER_SHIFT	1
#define BETTY_MODIFIER_ALT	2
#define BETTY_MODIFIER_CTRL	4
#define BETTY_MODIFIER_META	8


enum Betty_Key {
	BETTY_KEY_NULL = 0,

	BETTY_KEY_UP,
	BETTY_KEY_DOWN,
	BETTY_KEY_LEFT,
	BETTY_KEY_RIGHT,
	BETTY_KEY_ESCAPE,
	BETTY_KEY_BACKSPACE,
	BETTY_KEY_BREAK,
	BETTY_KEY_TAB,
	BETTY_KEY_RETURN,
	BETTY_KEY_NOSCROLL,
	BETTY_KEY_LINEFEED,

	BETTY_KEY_F1,	BETTY_KEY_KP_PF1 = BETTY_KEY_F1,
	BETTY_KEY_F2,	BETTY_KEY_KP_PF2 = BETTY_KEY_F2,
	BETTY_KEY_F3,	BETTY_KEY_KP_PF3 = BETTY_KEY_F3,
	BETTY_KEY_F4,	BETTY_KEY_KP_PF4 = BETTY_KEY_F4,
	BETTY_KEY_F5,
	BETTY_KEY_F6,
	BETTY_KEY_F7,
	BETTY_KEY_F8,
	BETTY_KEY_F9,
	BETTY_KEY_F10,
	BETTY_KEY_F11,
	BETTY_KEY_F12,

	BETTY_KEY_INSERT,
	BETTY_KEY_DELETE,
	BETTY_KEY_HOME,
	BETTY_KEY_END,
	BETTY_KEY_PAGEUP,
	BETTY_KEY_PAGEDOWN,

	BETTY_KEY_KP_0,
	BETTY_KEY_KP_1,
	BETTY_KEY_KP_2,
	BETTY_KEY_KP_3,
	BETTY_KEY_KP_4,
	BETTY_KEY_KP_5,
	BETTY_KEY_KP_6,
	BETTY_KEY_KP_7,
	BETTY_KEY_KP_8,
	BETTY_KEY_KP_9,
	BETTY_KEY_KP_MINUS,
	BETTY_KEY_KP_COMMA,
	BETTY_KEY_KP_PERIOD,
	BETTY_KEY_KP_MULTIPLY,
	BETTY_KEY_KP_ADD,
	BETTY_KEY_KP_DIVIDE,
	BETTY_KEY_KP_EQUAL,
	BETTY_KEY_KP_SPACE,
	BETTY_KEY_KP_TAB,
	BETTY_KEY_KP_ENTER,

	/* Number of function keys. This entry must be
	   the last entry */
	BETTY_KEY_COUNT	
};


struct Betty_KeyCode {
	/* Keycode without modifier keys pressed */
	const char	*code;

	/* Keycode with modifier keys pressed */
	const char	*code_mod;
};

struct Betty_KeyTab {
	const struct Betty_KeyCode	ansi[BETTY_KEY_COUNT];
	const struct Betty_KeyCode	deckpam[BETTY_KEY_COUNT];
	const struct Betty_KeyCode	decckm[BETTY_KEY_COUNT];
	const struct Betty_KeyCode	vt52[BETTY_KEY_COUNT];
};


extern const struct Betty_KeyTab BETTY_KEYTAB_VT220;

#endif

